﻿#pragma once
#include <string>
class AstType;
class AstNode;
class CodeGen;

struct Parameter {	// 参数定义
	std::string name;
	AstType* type = nullptr;
	AstNode* value = nullptr;
	CodeGen* defaultValue = nullptr;
	
	bool isProtected = false;
	int index = 0;
	
	Parameter() {}
	Parameter(std::string&& n, AstNode* v = nullptr) : name(n), value(v) {}
	Parameter(std::string&& n, AstType*t, AstNode* v = nullptr) : name(n), type(t), value(v) {}
	Parameter(AstNode* v) :value(v) {}

	Parameter clone() const;
};

